home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 11 / FM Towns Free Software Collection 11.iso / t_os / game / gt / gt.bas < prev    next >
BASIC Source File  |  1995-08-08  |  13KB  |  533 lines

  1. 10 '-----------------------------------------------------
  2. 20 '   GENERAL TARGET   ver. 1.0
  3. 30 '
  4. 40 '             programed by T.Toshima
  5. 50 '-----------------------------------------------------
  6. 60 :
  7. 70 CLEAR ,,,FRE(4)*.7!
  8. 80 DEFINT A-Z
  9. 90 WIDTH 80,25
  10. 100 RANDOMIZE TIME/4
  11. 101 ON ERROR GOTO *ERROR
  12. 110 T_MAX=1
  13. 120 DIM SPRCHR_NO%(11),TARGET%(T_MAX,4),OLD_RND%(T_MAX)
  14. 130 DIM RANK$(49),RANK%(49)
  15. 140 SCREEN @1
  16. 150 COLOR 7,0
  17. 160 CLS
  18. 170 OUT &H440,17,2
  19. 180 OUT &H442,240,2
  20. 190 GOSUB *RANK_LOAD
  21. 200 GOSUB *SPR_PTN_SET
  22. 210 GOSUB *SPR_CHR_SET
  23. 220 GOSUB *MOUSE_SET
  24. 230 :
  25. 240 '----------------------------------------
  26. 250 *INIT
  27. 260 '----------------------------------------
  28. 270 :
  29. 280 SCREEN 0
  30. 290 SCREEN @1
  31. 300 COLOR 7,0,0,4
  32. 310 CLS
  33. 320 VIEW(0,0)-(255,255)
  34. 330 WINDOW(0,0)-(255,255)
  35. 340 SCORE=0
  36. 350 FLG=0
  37. 360 RESTORE *DATA
  38. 390 OUT &H440,17,2
  39. 400 OUT &H442,INT(480\2+0*256),2
  40. 410 :
  41. 420 GOSUB *OPENING
  42. 430 GOSUB *SCREEN_SET
  43. 440 GOSUB *REDRAW_SCORE
  44. 450 :
  45. 460 '-----------------------------------------
  46. 470 *MAIN
  47. 480 '-----------------------------------------
  48. 490 :
  49. 500 GOSUB *COUNT
  50. 510 GOSUB *MOUSE_PUT
  51. 520 WHILE FLG<=20
  52. 530   FOR LOOP1=0 TO 89
  53. 540     SPRITE TIME
  54. 550     GOSUB *MOUSE_CHECK
  55. 560   NEXT
  56. 570   BEEP 363523,30,1250
  57. 580   FOR LOOP1=0 TO 1
  58. 590     FOR LOOP2=0 TO 15
  59. 600       SPRITE TIME
  60. 610       GOSUB *MOUSE_CHECK
  61. 620       SPRITE TIME
  62. 630       GOSUB *TARGET_MOVE
  63. 640     NEXT
  64. 650   NEXT
  65. 660   FLG=FLG+1
  66. 670 WEND
  67. 680 GOSUB *QUIET
  68. 690 GOSUB *RANKING_CHECK
  69. 700 GOSUB *RANKING_VIEW
  70. 710 GOTO *INIT
  71. 720 :
  72. 730 '---------------------------------------
  73. 740 *QUIET
  74. 750 '---------------------------------------
  75. 760 :
  76. 770 FOR I=0 TO 89
  77. 780   GOSUB *MOUSE_CHECK
  78. 790 NEXT
  79. 800 FOR I=0 TO 11
  80. 810   SPRITE 0,SPRCHR_NO%(I),0
  81. 820 NEXT
  82. 830 SYMBOL(87,103),"それまで!",1,1,2,,,1
  83. 840 WHILE MOUSE(2,0)=0 : WEND
  84. 850 WHILE MOUSE(2,0) : WEND
  85. 860 FOR I=0 TO 239 STEP 2
  86. 870   LINE(0,I)-(255,I),PSET,0
  87. 880   LINE(0,239-I)-(255,239-I),PSET,0
  88. 890   WAIT 1
  89. 900 NEXT
  90. 901 SPRITE OFF
  91. 910 RETURN
  92. 920 :
  93. 930 '-----------------------------------------
  94. 940 *RANKING_CHECK
  95. 950 '-----------------------------------------
  96. 960 :
  97. 970 SPRITE OFF
  98. 980 CLS
  99. 990 OUT &H440,17,2
  100. 1000 OUT &H442,240,2
  101. 1010 RANK_IN=0
  102. 1020 RANK=0
  103. 1030 'GOSUB *RANK_LOAD
  104. 1040 FOR I=0 TO 49
  105. 1050   IF RANK%(I)<=SCORE THEN RANK=I+1 : RANK_IN=1 : I=49
  106. 1060 NEXT
  107. 1070 IF RANK_IN=0 THEN RETURN
  108. 1080 FOR I=49 TO RANK STEP -1
  109. 1090   RANK%(I)=RANK%(I-1)
  110. 1100   RANK$(I)=RANK$(I-1)
  111. 1110 NEXT
  112. 1120 X=27 : Y=79
  113. 1130 XX=227 : YY=149
  114. 1140 GOSUB *DRAW_WINDOW
  115. 1150 X=203 : Y=113
  116. 1160 XX=51 : YY=92
  117. 1170 GOSUB *DRAW_WINDOW
  118. 1180 X=203 : Y=133
  119. 1190 XX=51 : YY=122
  120. 1200 GOSUB *DRAW_WINDOW
  121. 1210 CONSOLE 0,24,2
  122. 1220 SYMBOL(127-13*8,31),"すばらしい!ぜひ、お名前を",1,1,6,,,1
  123. 1230 COLOR 4:LOCATE 21,10:PRINT "例:浦和市立 遠嶋"
  124. 1240 COLOR 6:LOCATE 37,11:PRINT "※8文字まで有効です。"
  125. 1250 COLOR 4:LOCATE 21,13:INPUT "",A$
  126. 1260 RANK%(RANK-1)=SCORE
  127. 1270 RANK$(RANK-1)=LEFT$(A$,16)
  128. 1280 A$="" : RANK_IN=0
  129. 1290 GOSUB *RANK_SAVE
  130. 1300 CLS
  131. 1310 SPRITE ON
  132. 1320 RETURN
  133. 1330 :
  134. 1340 '-----------------------------------------
  135. 1350 *DRAW_WINDOW
  136. 1360 '-----------------------------------------
  137. 1370 :
  138. 1380 LINE(X,Y)-(XX,YY),PSET,[17*8,17*8,17*8],BF
  139. 1390 CONNECT(X,YY)-(X,Y)-(XX,Y),[25*8,25*8,25*8]
  140. 1400 CONNECT(X,YY)-(XX,YY)-(XX,Y),[10*8,10*8,10*8]
  141. 1410 RETURN
  142. 1420 :
  143. 1430 '-----------------------------------------
  144. 1440 *RANKING_VIEW
  145. 1450 '-----------------------------------------
  146. 1460 :
  147. 1470 PY=0 : SP=2
  148. 1480 CLS
  149. 1481 SPRITE OFF
  150. 1490 MOUSE 0
  151. 1500 MOUSE 1,0,0
  152. 1510 'GOSUB *RANK_LOAD
  153. 1520 FOR I=50 TO (RANK-8)*-(RANK-8>=0)+1 STEP -1
  154. 1530   FOR R=0 TO 16/SP-1
  155. 1540     A=(PY+240) MOD 256
  156. 1550     LINE(16,A)-(255,A+SP-1),PSET,[0,0,0],BF
  157. 1560     SYMBOL(31-LEN(STR$(I))*8,A+R*SP),STR$(I),1,1,6,,,1
  158. 1570     SYMBOL(96-LEN(STR$(RANK%(I-1)))*8,A+R*SP),STR$(RANK%(I-1)),1,1,4
  159. 1580     SYMBOL(239-LEN(RANK$(I-1))*8,A+R*SP),RANK$(I-1),1,1,5
  160. 1590     PY=PY-SP
  161. 1600     IF PY<0 THEN PY=PY+256
  162. 1610     OUT &H440,17,2
  163. 1620     OUT &H442,240+PY*256,2
  164. 1630     WAIT 1
  165. 1640     IF MOUSE(2,0) AND DEMO=1 THEN
  166. 1650       BREAK_FLG=1
  167. 1660       R=16/SP-1
  168. 1670       I=(RANK-8)*-(RANK-8>=0)+1
  169. 1680     ENDIF
  170. 1690   NEXT
  171. 1700 NEXT
  172. 1710 IF BREAK_FLG=1 THEN
  173. 1720   BREAK_FLG=0
  174. 1730   PY=0 : SP=0 : A=0
  175. 1740   OUT &H440,17,2
  176. 1750   OUT &H442,240,2
  177. 1760   RETURN
  178. 1770 ENDIF
  179. 1780 IF RANK<>0 THEN
  180. 1790   FOR I=1 TO 5
  181. 1800     IF RANK<8 THEN
  182. 1810       A=(PY+(RANK-1)*16) MOD 256
  183. 1820       LINE(0,A)-(255,A+15),XOR,2,BF
  184. 1830     ELSE
  185. 1840       A=(PY+7*16) MOD 256
  186. 1850       LINE(0,A)-(255,A+15),XOR,2,BF
  187. 1860     ENDIF
  188. 1870     WAIT 50
  189. 1880   NEXT
  190. 1890 ENDIF
  191. 1900 FOR I=0 TO 299
  192. 1910   IF MOUSE(2,0) THEN I=299
  193. 1920   WAIT 1
  194. 1930 NEXT
  195. 1940 PY=0 : SP=0 : A=0
  196. 1950 OUT &H440,17,2
  197. 1960 OUT &H442,240,2
  198. 1970 RETURN
  199. 1980 :
  200. 1990 '-----------------------------------------
  201. 2000 *RANK_LOAD
  202. 2010 '-----------------------------------------
  203. 2020 :
  204. 2030 OPEN "I",1,"RANKING.DAT"
  205. 2040 FOR I=0 TO 49
  206. 2050   INPUT #1,RANK$(I),RANK%(I)
  207. 2060 NEXT
  208. 2070 CLOSE
  209. 2080 RETURN
  210. 2090 :
  211. 2100 '-----------------------------------------
  212. 2110 *RANK_SAVE
  213. 2120 '-----------------------------------------
  214. 2130 :
  215. 2140 KILL "RANKING.DAT"
  216. 2150 OPEN "O",1,"RANKING.DAT"
  217. 2160 FOR I=0 TO 49
  218. 2170   WRITE #1,RANK$(I),RANK%(I)
  219. 2180 NEXT
  220. 2190 CLOSE
  221. 2200 RETURN
  222. 2210 :
  223. 2220 '-----------------------------------------
  224. 2230 *OPENING
  225. 2240 '-----------------------------------------
  226. 2250 :
  227. 2260 DIM G%(61439)
  228. 2270 MOUSE 0
  229. 2280 MOUSE 1,0,0
  230. 2290 LOAD@"op.tif"
  231. 2300 GET@A(0,0)-(255,239),G%
  232. 2310 T$=TIME$
  233. 2320 WHILE MOUSE(2,0)=0
  234. 2330   IF T$<>TIME$ THEN A=A+1:T$=TIME$
  235. 2340   IF A=10 THEN 
  236. 2350     A=0 : DEMO=1 : RANK=0
  237. 2360     GOSUB *RANKING_VIEW
  238. 2370     PUT@A(0,0)-(255,239),G%
  239. 2380   ENDIF
  240. 2390 WEND
  241. 2400 WHILE MOUSE(2,0) : WEND
  242. 2410 ERASE G% : DEMO=0
  243. 2420 RETURN
  244. 2430 :
  245. 2440 '-----------------------------------------
  246. 2450 *COUNT
  247. 2460 '-----------------------------------------
  248. 2470 :
  249. 2480 FOR I=3 TO 1 STEP -1
  250. 2490   LINE(104,101)-(151,138),PSET,[0,0,31*8],BF
  251. 2500   SYMBOL(112,103),AKCNV$(RIGHT$(STR$(I),1)),2,2,6,,,1
  252. 2510   BEEP 363523,35,400
  253. 2520   WAIT 50
  254. 2530 NEXT
  255. 2540 LINE(104,101)-(151,138),PSET,[0,0,31*8],BF
  256. 2550 SYMBOL(112,103),"始",2,2,2,,,1
  257. 2560 BEEP 363523,60,600
  258. 2570 WAIT 50
  259. 2580 LINE(104,101)-(151,138),PSET,[0,0,31*8],BF
  260. 2590 RETURN
  261. 2600 :
  262. 2610 '-----------------------------------------
  263. 2620 *TARGET_MOVE
  264. 2630 '-----------------------------------------
  265. 2640 :
  266. 2650 FOR I=0 TO T_MAX
  267. 2660   NO=TARGET%(I,0)
  268. 2670   MOV=TARGET%(I,1)
  269. 2680   MAX=TARGET%(I,2)
  270. 2690   VE=TARGET%(I,3)
  271. 2700   TYPE=TARGET%(I,4)
  272. 2710   A=(NO\3=0)*-41+(NO\3=1)*-97+(NO\3=2)*-109
  273. 2720   IF NO=0 OR NO=3 OR NO=6 THEN VX= (MAX/16):VY= 0  '右へ
  274. 2730   IF NO=1 OR NO=4 OR NO=7 THEN VX=-(MAX/16):VY= 0  '左へ
  275. 2740   IF NO=2                 THEN VX= 0:VY=-(MAX/16)  '上へ
  276. 2750   IF NO=5                 THEN VX= 0:VY= (MAX/16)  '下へ
  277. 2760   MOV=MOV+(MAX/16)*VE
  278. 2770   SPRITE 6,A,VX*VE,VY*VE
  279. 2780   IF MOV=MAX THEN VE=-VE
  280. 2790   IF MOV=0 THEN GOSUB *GET_INIT : GOSUB *TARGET_REMOVE
  281. 2800   TARGET%(I,0)=NO
  282. 2810   TARGET%(I,1)=MOV
  283. 2820   TARGET%(I,2)=MAX
  284. 2830   TARGET%(I,3)=VE
  285. 2840   TARGET%(I,4)=TYPE
  286. 2850 NEXT
  287. 2860 A=0
  288. 2870 RETURN
  289. 2880 :
  290. 2890 '-----------------------------------------
  291. 2900 *TARGET_REMOVE
  292. 2910 '-----------------------------------------
  293. 2920 :
  294. 2930 RESTORE *TARGET_XY
  295. 2940 A=(NO\3=0)*-41+(NO\3=1)*-97+(NO\3=2)*-109
  296. 2950 FOR L=0 TO NO
  297. 2960   READ X,Y
  298. 2970 NEXT
  299. 2980 SPRITE 6,A,X-SPRITE(A,6),Y-SPRITE(A,7)
  300. 2990 RETURN
  301. 3000 *TARGET_XY
  302. 3010 DATA 480,80 , 224,80 ,  96,211 ,  48,96
  303. 3020 DATA 176,96 , 112,10 ,  88,109 , 152,109
  304. 3030 :
  305. 3040 '-----------------------------------------
  306. 3050 *SPR_PTN_SET
  307. 3060 '-----------------------------------------
  308. 3070 :
  309. 3080 DIM BUFFER%(255),SPR_PAT%(256*169-1)
  310. 3090 P=0 : S=0
  311. 3100 SYMBOL(127-13*8,111),"しばらくお待ちください・・",1,1,7,,,1
  312. 3110 LOAD@"spr_data.dat",SPR_PAT%
  313. 3120 DEF SPRITE 99,0
  314. 3130 FOR I=0 TO 168
  315. 3140   FOR J=0 TO 255
  316. 3150     BUFFER%(J)=SPR_PAT%(I*256+J)
  317. 3160   NEXT
  318. 3170   DEF SPRITE 0,4*I,BUFFER%,1
  319. 3180   'PUT@A(0,0)-(15,15),BUFFER%
  320. 3190 NEXT
  321. 3200 ERASE BUFFER%,SPR_PAT%
  322. 3210 CLS
  323. 3220 RETURN
  324. 3230 :
  325. 3240 '----------------------------------------
  326. 3250 *SPR_CHR_SET
  327. 3260 '----------------------------------------
  328. 3270 :
  329. 3280 RESTORE *DATA_OF_SPRITE
  330. 3290 I=0:P=0
  331. 3300 READ S,X,Y,XX,YY
  332. 3310 WHILE XX<>99
  333. 3320   DEF SPRITE 1,P,(X,Y),S*4,XX,YY,0
  334. 3330   SPRCHR_NO%(I)=P
  335. 3340   P=P+XX*YY
  336. 3350   I=I+1 
  337. 3360   READ S,X,Y,XX,YY
  338. 3370 WEND
  339. 3380 P=0 : S=0
  340. 3390 X=0 : Y=0
  341. 3400 XX=0 : YY=0
  342. 3410 RETURN
  343. 3420 :
  344. 3430 *DATA_OF_SPRITE
  345. 3440 DATA 0,119,111,1,1 , 1,0,80,2,8 , 1,224,80,2,8 , 17,96,211,4,2
  346. 3450 DATA 25,480,80,4,8 , 121,48,96,2,4 , 121,176,96,2,4 , 129,112,10,2,4
  347. 3460 DATA 137,48,96,2,4 , 161,88,109,1,2 , 161,152,109,1,2 , 163,88,109,1,2
  348. 3470 DATA 1,1,1,99,99
  349. 3480 :
  350. 3490 '-----------------------------------------
  351. 3500 *MOUSE_SET
  352. 3510 '-----------------------------------------
  353. 3520 :
  354. 3530 MOUSE 0
  355. 3540 MOUSE 4,0,2,255,239
  356. 3550 RETURN
  357. 3560 :
  358. 3570 '-----------------------------------------
  359. 3580 *MOUSE_PUT
  360. 3590 '-----------------------------------------
  361. 3600 :
  362. 3610 MOUSE 1,127,119,0
  363. 3620 SPRITE 0,0,0
  364. 3630 SPRITE 0,SPRCHR_NO%(0),1
  365. 3640 RETURN
  366. 3650 :
  367. 3660 '-----------------------------------------
  368. 3670 *MOUSE_CHECK
  369. 3680 '-----------------------------------------
  370. 3690 :
  371. 3700 SPRITE 6,0,MOUSE(0)-SPRITE(0,6)-6,MOUSE(1)-SPRITE(0,7)-6
  372. 3710 TRIG=MOUSE(2,0)
  373. 3720 IF OLD_TRIG=0 AND TRIG THEN GOSUB *SHOTTO
  374. 3730 OLD_TRIG=TRIG
  375. 3740 RETURN
  376. 3750 :
  377. 3760 '-----------------------------------------
  378. 3770 *SHOTTO
  379. 3780 '-----------------------------------------
  380. 3790 :
  381. 3800 DIM HANTEI%(T_MAX)
  382. 3810 OLD_NO=0
  383. 3820 RESTORE *TARGET_XY
  384. 3830 MX=MOUSE(4,0) : MY=MOUSE(5,0)
  385. 3840 FOR I=0 TO T_MAX
  386. 3850   RESTORE *TARGET_XY
  387. 3860   NO=TARGET%(I,0)
  388. 3870   MOV=TARGET%(I,1)
  389. 3880   MAX=TARGET%(I,2)
  390. 3890   FOR II=0 TO NO
  391. 3900     READ X,Y
  392. 3910   NEXT
  393. 3920   ON NO+1 GOSUB *RIGHT,*LEFT,*DOWN,*RIGHT,*LEFT,*UP,*RIGHT,*LEFT
  394. 3930   IF MX>=X AND MY>=Y AND MX<=XX AND MY<=YY AND TARGET%(I,4)<>2 THEN
  395. 3940     HANTEI%(I)=-1
  396. 3950   ENDIF
  397. 3960 NEXT
  398. 3970 IF SEARCH(HANTEI%,-1)=-1 THEN ERASE HANTEI%:RETURN
  399. 3980 FOR I=0 TO T_MAX
  400. 3990   NO=TARGET%(I,0)
  401. 4000   IF HANTEI%(I)=-1 AND OLD_NO<=NO THEN
  402. 4010     OLD_NO=NO
  403. 4020     MAX=TARGET%(I,2)
  404. 4030     T=I
  405. 4040   ENDIF
  406. 4050 NEXT
  407. 4060 IF TARGET%(T,4)=0 THEN
  408. 4070   BEEP 363523,15,1023
  409. 4080   SCORE=SCORE+100*(OLD_NO\3+1)
  410. 4090 ELSE
  411. 4100   BEEP 363523,15,124
  412. 4110   SCORE=SCORE-100*(OLD_NO\3+1)
  413. 4120 ENDIF 
  414. 4130 GOSUB *REDRAW_SCORE
  415. 4140 TARGET%(T,4)=2
  416. 4150 A=(MAX/16)^2*4
  417. 4160 B=(OLD_NO\3=0)*-41+(OLD_NO\3=1)*-97+(OLD_NO\3=2)*-109
  418. 4170 IF B=41  THEN SPRITE 1,B,(25+A)*4
  419. 4180 IF B=97  THEN SPRITE 1,B,(137+A)*4
  420. 4190 IF B=109  THEN SPRITE 1,B,(163+A)*4
  421. 4200 T=0 : A=0 : B=0 : ERASE HANTEI%
  422. 4210 RETURN
  423. 4220 :
  424. 4230 '--------------------
  425. 4240 *RIGHT
  426. 4250 '--------------------
  427. 4260 :
  428. 4270 XX=(X+MAX+MOV-1) MOD 511
  429. 4280 YY=Y+MAX*2-1
  430. 4290 X=(X+MAX) MOD 511
  431. 4300 Y=Y
  432. 4310 RETURN
  433. 4320 :
  434. 4330 '--------------------
  435. 4340 *LEFT
  436. 4350 '--------------------
  437. 4360 :
  438. 4370 XX=X-1
  439. 4380 YY=Y+MAX*2-1
  440. 4390 X=X-MOV
  441. 4400 Y=Y
  442. 4410 RETURN
  443. 4420 :
  444. 4430 '--------------------
  445. 4440 *DOWN
  446. 4450 '--------------------
  447. 4460 :
  448. 4470 XX=X+MAX-1
  449. 4480 YY=Y-1
  450. 4490 X=X
  451. 4500 Y=Y-MOV
  452. 4510 RETURN
  453. 4520 :
  454. 4530 '--------------------
  455. 4540 *UP
  456. 4550 '--------------------
  457. 4560 :
  458. 4570 XX=X+MAX-1
  459. 4580 YY=Y+MAX*2+MOV-1
  460. 4590 X=X
  461. 4600 Y=Y+MAX*2
  462. 4610 RETURN
  463. 4620 :
  464. 4630 '-----------------------------------------
  465. 4640 *REDRAW_SCORE
  466. 4650 '-----------------------------------------
  467. 4660 :
  468. 4670 A=-20*(SCORE>=0)+-14*(SCORE<0)
  469. 4680 LINE(176,16)-(239,31),PSET,[A*8,A*8,A*8],BF
  470. 4690 SYMBOL(239-LEN(STR$(SCORE))*8,16),STR$(SCORE),1,1,1,,,1
  471. 4700 RETURN
  472. 4710 :
  473. 4720 '-----------------------------------------
  474. 4730 *SCREEN_SET
  475. 4740 '-----------------------------------------
  476. 4750 :
  477. 4751 SPRITE ON
  478. 4752 SPRITE SCREEN (32,0)
  479. 4753 OUT &H440,17,2
  480. 4754 OUT &H442,INT(480\2+0*256),2
  481. 4760 LOAD@"base.tif",(0,0)
  482. 4770 FOR I=1 TO 11
  483. 4780   SPRITE 0,SPRCHR_NO%(I),1
  484. 4790 NEXT
  485. 4800 FOR I=0 TO T_MAX
  486. 4810   GOSUB *GET_INIT
  487. 4820   GOSUB *TARGET_REMOVE
  488. 4830   TARGET%(I,0)=NO
  489. 4840   TARGET%(I,1)=0
  490. 4850   TARGET%(I,2)=MAX
  491. 4860   TARGET%(I,3)=VE
  492. 4870   TARGET%(I,4)=TYPE
  493. 4880 NEXT
  494. 4890 B=0
  495. 4900 RETURN
  496. 4910 :
  497. 4920 '-----------------------------------------
  498. 4930 *GET_INIT
  499. 4940 '-----------------------------------------
  500. 4950 :
  501. 4960 RESTORE *DATA
  502. 4970 A=INT(RND(1)*3)
  503. 4980 WHILE SEARCH(OLD_RND%,A+1)<>-1
  504. 4990   A=INT(RND(1)*3)
  505. 5000 WEND
  506. 5010 NO=3 * A + INT(RND(1)*(3+(A=2)))
  507. 5020 VE=1
  508. 5030 TYPE=INT(RND(1)*2)
  509. 5040 FOR L=0 TO NO
  510. 5050   READ MAX
  511. 5060 NEXT
  512. 5070 IF T_MAX<>0 THEN
  513. 5080   FOR L=T_MAX TO 1 STEP -1
  514. 5090     OLD_RND%(L)=OLD_RND%(L-1)
  515. 5100   NEXT
  516. 5110 ENDIF
  517. 5120 OLD_RND%(0)=A+1
  518. 5130 A=(NO\3=0)*-41+(NO\3=1)*-97+(NO\3=2)*-109
  519. 5140 IF A=41  THEN SPRITE 1,A,(25+32*TYPE)*4
  520. 5150 IF A=97  THEN SPRITE 1,A,(137+8*TYPE)*4
  521. 5160 IF A=109  THEN SPRITE 1,A,(163+2*TYPE)*4
  522. 5170 A=0 : L=0
  523. 5180 RETURN
  524. 5190 *DATA
  525. 5200 DATA 64,64,64,32,32,32,16,16
  526. 5210 :
  527. 5211 '-----------------------------------------
  528. 5212 *ERROR
  529. 5213 '-----------------------------------------
  530. 5214 :
  531. 5215 RESUME NEXT
  532. 5216 :
  533.